// redis-client.js  
const redis = require('redis');

// 创建 Redis 客户端  
const client = redis.createClient({
  host: '127.0.0.1', // Redis 服务器地址  
  port: 6379, // Redis 服务器端口  
  // 如果你的 Redis 服务器设置了密码，可以添加 auth_pass  
  // password: 'yourpassword'  
});

// 如果 Redis 服务器需要密码认证  
// client.auth('yourpassword', function(err) {  
//   if (err) throw err;  
//   console.log('Redis client ready...');  
// });  

// 确保客户端在 Node.js 应用程序退出前关闭连接  
process.on('exit', () => {
  client.quit();
});

// 封装 Redis 命令  
class RedisClient {
  constructor() {
    this.client = client;
  }

  // 示例：封装 get 命令  
  get(key) {
    return new Promise((resolve, reject) => {
      this.client.get(key, (err, value) => {
        if (err) reject(err);
        else resolve(value);
      });
    });
  }

  // 示例：封装 set 命令  
  set(key, value) {
    return new Promise((resolve, reject) => {
      this.client.set(key, value, (err) => {
        if (err) reject(err);
        else resolve(true);
      });
    });
  }
  setWithTTL(key, value, ttl) {  
    return new Promise((resolve, reject) => {  
      client.set(key, value, 'EX', ttl, (err) => {  
        if (err) reject(err);  
        else resolve(true);  
      });  
    });  
  }  
  del(key) {
    return new Promise((resolve, reject) => {
      this.client.del(key, function (err, num) {
        if (err) {
          console.error('Error deleting key:', err);
        } else {
          console.log(`Key ${key} deleted successfully. Deleted ${num} keys.`);
        }
      });

    });
  }


  // 你可以继续封装其他 Redis 命令...  
}

module.exports = new RedisClient();